import Foundation

//为什么didSet和willSet没有效果呢，这两个内部方法带有newValue和oldValue两个值
class computer{

    static let max = 233
    var power = 0{
        willSet{
            print("hihi\(newValue)")
        }
        didSet{
            print("huihui\(oldValue)")
        }
        
    }
    func printPower()->Int{
        return self.power
    }
    init(){
        self.power = 232
    }
    init(power:Int){
        //主构造器
    }
    
    convenience init(power:Int,goodV:String){
        //便捷构造器，一般会依赖于主构造器,如果没有使用init会报错
        self.init()
    }
    
    deinit(){
        //一般软件已经帮我们做了 ，所以比较少用
    }
}

//如果开头带有final关键字的话 子类就无法继续继承这个类了
class goodcomputer: computer {
//    可以通过override重载方法或者是计算属性
}

let newGoodComputer = goodcomputer()
newGoodComputer.power = 20
newGoodComputer.printPower()



let newComputer = computer()
newComputer.power=21

newComputer.power = 100
//直接使用类属性处理即可
computer.max

//不再使用#而是写两次变量名来强制要求使用的时候用变量名+数值的方式
func someFunction(parameterName parameterName: Int) { parameterName }
someFunction(parameterName: 5)


//数组下标可以查找数值 

struct Square {
    var gain = 12
    subscript(radius:Double)->Double{
        return M_PI * pow(radius,2)
    }
}
//其实swift自带struct的初始化方法，直接可以使用
let s2 = Square(gain: 22)
let s1 = Square()
//通过subscript来使用下标
s1[2]



extension Double{
    var rmb:Double{
        return self * 0.1
    }
}

var num = 10.01
num.rmb




